home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-03-06 | 8.0 KB | 160 lines | [TEXT/GEOL] |
- Item 6252560 29-Aug-90 15:27PDT
-
- From: PHAROS.TECH Pharos Tech, Tech Staff,PRT
-
- To: D4695 Lucas Arts Editing Systems,PRT
- MACAPP.TECH$ MacApp Technical
-
- Sub: RE: Complex Printing
-
- From: Schmitz, Scott D. on Wed, Aug 29, 1990 6:26 PM
- Subject: RE: Complex Printing
- To: D4695; MacApp; Schmitz, Scott D.
-
- Peter,
-
- I sent a similar mail message around 4 weeks ago. I got no solutions but did
- get around a dozen requests to learn of any solutions that I might learn about.
- Alas, I failed to learn a reasonable solution to the "Calc Print Flaw."
-
- Peter, if you learn of anything, please post it to MacApp.Tech, I am dying to
- hear of any possible solutions!
-
- There is a considerable oppurtunity for the MacApp team to improve the print
- architecture. Due to the interest my mail message generated, I know that many
- others have also had problems with the MacApp print architecture. Lets hope we
- see some new print objects soon!
-
- An idea for an immediate solution to your problem:
- You may want to try resizing the view you want to print, do your printing and
- then size the view back. If you do the resizing after the port has been set to
- the printer port, these changes would not even show up on the screen. This
- way, the width of a view with scrollbars can be changed to something other than
- what you see on the screen. Be sure that recalcpagebreaks is called after your
- resizing as all your page breaks will be different.
-
-
- Some larger issues:
- I needed to print a view structure quite similar to the Calc demo with the
- addition of a text field as well. I found that if you want to print more than
- one view you are out of luck. You can print views which are nested but if you
- don't have a nested view it just doesn't work.
-
- I have found that the existing printing architecture has the following
- difficulties:
- (1) If you want to print a spreadsheet view and then after the spreadsheet view
- print some text or you want to print three GridViews, one for the cells, one
- for the column names and one for the row names; The print extent, the page
- breaks and the draw pages all assume that you are printing ONE VIEW! I have
- tried overriding several methods such as SetPrintExtent, BreakFollowing, and
- DrawPageInterior to work around this problem. My success was slight. After
- around 7 man-days, I had something which worked great when printing a single
- page but was rather poor with multiple page printing. TStdPrintHandler gives
- you lots of great sophisticated stuff such as page breaks which break the page
- at intelligent locations, clipping so that you only print what makes sense and
- lots more. The problem is that it all seems to assume a mono view printing
- architecture.
- (2) The assumption is that you want your printout to look exactly like what the
- screen looks like. For many cases, this is fine. After all, that's what
- WYSWIG is all about. For those other cases, your possibilities are insuffient
- to the task. For example, If you want to print a database entry screen which
- has a few scrolling text fields a few scrolling grid views and a few pop ups,
- you would be crazy to want the printout to look exactly like the screen. After
- all, your printout doesn't have scrollbars! You will need to print the text in
- the scrolling text fields and gridviews in their entierety. Further, there may
- be views on the screen which don't make sense to print- for example a pop up
- menu may not make any sense to appear on a printout.
- (3) Let's say you want to print a view offset (200,300) from the upper left
- hand corner of the paper. I can't see how you can do it! Making the
- DrawContents call draws your view at (0,0) using the origon set due to your
- page number. If you wanted to print anywhere other than (0,0) you are out of
- luck. The clipping, the page breaks and the drawing is all done based on
- drawing at (0,0).
-
- From personal experience I have found that printing with TStdPrintHandler is
- just not reasonably extendable/overridable to allow for the above cases.
-
- I would suggest that we need another object which would be derived from
- TprintHandle. This new print handler would allow for the following:
- (a) Printing of multiple views. Instead of the fView field, we could have a
- linked list of fViews. Or perhaps instead a boolean for every view. The
- boolean would specify if that view would print out on a printer.
- (b) Ability to place a view anywhere you wanted as far as x,y. This printing
- should be relative to the 0,0 point on the first page or the 0,0 point on a
- specific page that you are imaging. This last point is important when printing
- something such as a spreadsheet.
- Take for example the Calc example; Not only do you want the row and column
- names to appear along the top and leftmost area of the printout, you want the
- row and column names to print along the top and leftmost area of each page. To
- see what I mean, print a large spreadsheet which prints a grid of paper. A few
- pieces of paper along the x axis and a few along the y axis. From an example
- like that it becomes clear that every piece of paper needs row and column
- labels - just like Excel prints. This could be printed in the AdornPage
- routine but presently this isn't possible as trying to print any view prints it
- at 0,0 relative to the first page!
- What you want, when printing the Row Numbers is to print the RowsView at
- an X,Y value where X = 0, relative to page 1 and Y = 0, relative to the current
- page you are imaging. For the Column numbers you would want X = 0, relative to
- the current page and Y = 0, relative to page 1. Your CellsView would need to
- be printed not at 0,0 but to the right the width of your Row numbers and down
- the height of your column numbers.
- (c) Ability to place a view relative to another view. For example, the
- RowsView would abutt the CellView along the leftmost vertical axis of the
- CellsView in the Calc demo. If you could somehow symbolically define this
- instead of hard coding x,y offsets you could avoid problems when one view gets
- larger when it is printed. For example, if you want to print some text right
- after your spreadsheet, but you don't know how big the spreadsheet is.
-
-
- I might have missed something fundimental but I doubt that Calc can be made to
- print showing Row & Column titles on each page within the existing print
- arctitecture!
-
- Scott Schmitz
- Pharos
- _______________________________________________________________________________
- From: D4695 on Wed, Aug 29, 1990 1:33 PM
- Subject: Complex Printing
- To: Zimmerman, Kent A.
-
- Item 4638771 29-Aug-90 08:38PDT
-
- From: D4695 Lucas Arts Editing Systems,PRT
-
- To: MACAPP.TECH$ MacApp Technical
-
- Sub: Complex Printing
-
- Yo MacApp Dudes,
-
- In the last few weeks I've seen several questions about printing complex
- view structures go unanswered. And after trying to print a complex view
- structure myself I now know why. Perhaps by giving a specific example based on
- a demo program some concrete solutions will surface.
-
- The Calc demo program is an excellent example of a view structure not
- uncommon in Mac Applciations - A data area encased by column tiles and row
- titles that scroll "together". In fact USynchScroller is intended specifically
- to support just such a structure where multiple scrollers coordinate multiple
- views. Unfortunately this is a very difficult view structure to print in
- MacApp and Calc's solution is to only prints the "interior" of the spreadsheet,
- refusing to print the column or row titles. In fact any view hierarchy that
- has multiple scrollers can be tough to print.
-
- The problem is not so much that TStdPrintHandler wants a single view to
- define the view to be printed, but that scrollers limit the size of the printed
- view to their size and translate the view to their translation. Perhaps There
- is a cheap way to make scrollers "invisible" during printing.
-
- If anyone can suggest a real way to print views such as in Calc I would
- greatly appreciate hearing about it.
-
- Thanks
-
-
- Peter Young
-
-
-
-
-